//defined by liu 2013-12-22 20:09

#ifndef _MODULESSCENE_INTERFACE_H
#define _MODULESSCENE_INTERFACE_H

#ifndef MODULESSCENE_API
#define MODULESSCENE_API __declspec(dllimport)
#if _DEBUG
#pragma comment(lib, "GasDiffusionModules_d.lib")
#else
#pragma comment(lib, "GasDiffuseionModules.lib")
#endif
#endif

#include <math.h>
#include <assert.h>

struct Point3f
{
	float x, y, z;
};

class MODULESSCENE_API CBigMassDiffuseModulesInterface
{
public:
	CBigMassDiffuseModulesInterface();
	~CBigMassDiffuseModulesInterface();

private:
	//the function of big mass diffusion
	Point3f **GetBigMassDiffuseModuleOne(float oa, float ob);
	Point3f **GetBigMassDiffuseModuleTwo(float ta, float tb);
	Point3f **GetBigMassDiffuseModuleThree(float ra, float rb);
	Point3f **GetBigMassDiffuseModuleFour(float fa, float fb);
	Point3f **GetBigMassDiffuseModuleFive(float va, float vb);
	Point3f **GetBigMassDiffuseModuleSix(float sa, float sb);

public:
	//Draw modules of the big mass diffusion
	void RenderBigMassDiffuseModuleOne();
	void RenderBigMassDiffuseModuleTwo();
	void RenderBigMassDiffuseModuleThree();
	void RenderBigMassDiffuseModuleFour();
	void RenderBigMassDiffuseModuleFive();
	void RenderBigMassDiffuseModuleSix();

	//the middle function
	void MassMiddleFunction(Point3f ** fPoint, int n);

};


class MODULESSCENE_API CSmallMassDiffuseModulesInterface
{
public:
	CSmallMassDiffuseModulesInterface();
	~CSmallMassDiffuseModulesInterface();

private:
	//the function of small mass diffusion
	Point3f **GetSmallMassDiffuseModuleOne(float oa, float ob);
	Point3f **GetSmallMassDiffuseModuleTwo(float ta, float tb);
	Point3f **GetSmallMassDiffuseModuleThree(float ra, float rb);
	Point3f **GetSmallMassDiffuseModuleFour(float fa, float fb);
	Point3f **GetSmallMassDiffuseModuleFive(float va, float vb);
	Point3f **GetSmallMassDiffuseModuleSix(float sa, float sb);

public:
	//Draw modules of small mass diffusion
	void RenderSmallMassDiffuseModuleOne();
	void RenderSmallMassDiffuseModuleTwo();
	void RenderSmallMassDiffuseModuleThree();
	void RenderSmallMassDiffuseModuleFour();
	void RenderSmallMassDiffuseModuleFive();
	void RenderSmallMassDiffuseModuleSix();

private:
	CBigMassDiffuseModulesInterface *m_MassDiffuseModules;
};

#endif